import  os,re,time

#   goto_cwd()      该指令将目录初始化到雷电模拟器目录！必须使用！！！
cwd = "D:/雷电模拟器/dnplayer2/"     #   雷电模拟器安装目录

#   输入CMD指令，返回CMD指令结果，如需查看结果  使用read查看
def input(text):
    return os.popen(text)
#   对输入指令执行、打印、结果返回！
def input_Ex(text):
    result = os.popen(text)
    print(result.read())
    return result
#   获取当前工作目录        初始化！
def get_cwd():
    return os.getcwd()
#   改变目录到指定目录
def goto_cwd(text):
    os.chdir(text)
    return text
#   adb 到雷电，接属性         过时  不建议使用   容易引发端口占用模拟器闪退！！
def cmd_adb(text):
    return input("adb.exe " + text).read()
#   ld 到雷电，接属性          推荐！
def cmd_ld(text):
    return input("ld.exe " + text).read()
#   dnconsole，接属性           推荐！
def cmd_dnconsole(text):
    return input("dnconsole.exe " + text).read()
#   打开指定模拟器     输入数字为索引，文本为模拟器名字【名字不能全是数字】
def ld_launch(text):
    if text.isdigit():
        cmd_dnconsole("launch --index " + text)
    else:
        cmd_dnconsole("launch --name " + text)
#   启动所有模拟器
def ld_launch_all(time = None):
    if time == None:
        time = 0.5
    id = ld_list()[0]
    print(id)
    for i in range(len(id)):
        cmd_dnconsole("launch --index " + str(id[i]))
        sleep(time)
#   重启指定模拟器     输入数字为索引，文本为模拟器名字【名字不能全是数字】
def ld_reboot(text):
    if text.isdigit():
        cmd_dnconsole("reboot --index " + text)
    else:
        cmd_dnconsole("reboot --name " + text)
#   退出指定模拟器     输入数字为索引，文本为模拟器名字【名字不能全是数字】
def ld_quit(text):
    if text.isdigit():
        cmd_dnconsole("quit --index " + text)
    else:
        cmd_dnconsole("quit --name " + text)
#   退出所有模拟器
def ld_quit_all():
    cmd_dnconsole("quitall")
#   获取模拟器状态
def ld_list():
    id = []
    title = []
    android = []
    list = cmd_dnconsole("list2")
    list = list.split("\n")
    for i in range(len(list) - 1):
        a = list[i].split(",")
        id.append(a[0])
        title.append(a[1])
        if a[4] == "0":
            android.append(False)
        else:
            android.append(True)
    return id, title, android
#   根据  模拟器名称   搜索  索引ID
def ld_find_id(text):
    id, title = ld_list()[0], ld_list()[1]
    for i in range(len(title)):
        if title[i].find(text) != -1:
            return id[i]
    return -1
#   根据  索引ID      搜索  模拟器名字
def ld_find_title(text):
    id, title = ld_list()[0], ld_list()[1]
    for i in range(len(id)):
        if id[i].find(text) != -1:
            return title[i]
    return -1
#   点击模拟器   索引  x坐标 y坐标
def ld_tap(id, x, y):
    cmd_ld("-s " + str(id) + " input tap " + str(x) + " " + str(y))
#   延迟！
def sleep(num):
    time.sleep(num)